Conventional mobile devices are capable of connecting to a home network serviced by the carrier of the mobile device as well as one or more roaming networks. However, the determination of priority for connecting to roaming networks is based on a static roaming priority list, typically based on the instant location of the mobile device and any valid roaming agreements with other carriers servicing that location. However, such roaming priority lists are static and cannot be updated in real-time, nor can they be updated in response to conditions or parameters monitored by the mobile device or the carrier network as a whole. Because traffic load on any given network is heavily dependent on the time of day and location within the network, periodic bottlenecking at different locations and times within networks is common. Further promoting bottlenecking, such static roaming priority lists do not allow for transitions from the home network to a roaming network unless the home network is no longer available for connection. Thus, such static global roaming priority lists fail to provide for adequate utilization of available bandwidth of the home network and available roaming networks.